#ifndef MODULATOR_H
#define MODULATOR_H

#include <QObject>

#include "../RScode/source/superheader.h"

class Modulator : public QObject
{
  Q_OBJECT

  // !!!!!!!!!!! нужно оттестировать

private:
  qlonglong m_q;       // объем сигнального алфавита
  qreal     m_E;       // средняя энергия сигналов QAM
  qlonglong m_sqrtQ;
  qlonglong m_sqrtQDown;
  qlonglong m_m;       // число бит переносимых сигналом
  qreal     m_l;       // минимальное расстояние между сигнальными точками
  qreal     m_A;       // амплитуда сигналов QAM
  qreal     m_delta;   // минимальное расстояние между сигналами

public:
  explicit Modulator(qlonglong q, qreal energy, QObject *parent = 0);

  QVector<QPointF> modulation(const QVector<qlonglong> a); // модуляция
};

#endif // MODULATOR_H
